package top.waikin.aspect.annonation;

import top.waikin.aspect.aspect.CacheAspect;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 请求缓存注解
 *
 * @author WaiKin
 * @date 2022/11/26
 * @see CacheAspect
 */
@Target(METHOD)
@Retention(RUNTIME)
public @interface RequireCache {
  /**
   * key前缀 e.g.: list
   *
   * @return {@code String}
   */
  String keySuffix() default "";

  /**
   * 生存时间 如果为0使用@EnableCache#ttl
   *
   * @return long
   */
  long ttl() default 0;

  /**
   * 是否存储为null的值
   *
   * @return boolean
   */
  boolean storageNullFlag() default false;
}
